Re: svn commit: r773881 - in /httpd/httpd/branches/2.2.x: CHANGES
am 22.05.2009 23:08:10 von Jeff Trawick--000e0cd2c0526d39e1046a86a8ea
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
On Fri, May 22, 2009 at 4:21 PM, Jeff Trawick
>
>
> On Fri, May 22, 2009 at 2:59 PM, William A. Rowe, Jr.
>
>> Joe Orton wrote:
>> >
>> > Having thought about this longer, I do agree that it would be reasonable
>> > to provide OPT_INCNOEXEC as a noop integer for back-compat, but, it
>> > turns out we're out of bits - allow_options_t is an unsigned char and
>> > we're using 2^0 through 2^7 already. :(
>>
>> The C langauge promotes char -> int for comparison. 256 should work fine,
>> no? It would devolve to 0, of course, but 256 & 255 should test fine.
>>
>> Thoughts?
>
>
> Backing up a bit...
>
> I originally thought we could map bit values in 2.2.x to avoid affecting
> modules, but that isn't possible since includes-with-exec is two bits
> instead of one.
>
> Mapping OPT_INCNOEXEC to a no-op integer is something that takes place at
> compile time, and helps applications which reference the symbol but don't
> use it in any important way. (IOW, let mod_perl and other similar tarballs
> compile.) It is good in that it lets mod_perl compile, but bad in that
> mod_perl continues to export the Perl mapping of OPT_INCNOEXEC even after
> httpd has been upgraded and at some point later mod_perl is upgraded.
>
> Failing the compile is our only opportunity to catch some affected modules
> (though it is a rather late opportunity since the modules will likely be
> rebuilt later since they're supposed to work as-is when upgrading httpd;
> somebody will grumble though).
>
> I don't think we should try to preserve compilability if we can't preserve
> compatibility.
>
>
>>
>> > The only available option is to #define OPT_INCNOEXEC to some bogus
>> > string or something; not sure I like that much better than just a clean
>> > break.
>>
>
> /*
> * #define OPT_INCNOEXEC 32
> * Apache 2.2.12 and later no longer provide this.
> * Applications which distinguish between includes-without-exec and
> includes-with-exec
> * must use different logic for 2.2.<12 and 2.2.>=12.
> * Prior to 2.2.12:
> * includes-without-exec: OPT_INCNOEXEC flag on, OPT_INCLUDES flag off
>
oops, both flags were on here
>
> * includes-with-exec: OPT_INCNOEXEC flag off, OPT_INCLUDES flag on
> * As of 2.2.12:
> * includes-without-exec: OPT_INCLUDES flag on, OPT_INC_WITH_EXEC flag
> off
> * includes-with-exec: OPT_INCLUDES flag on, OPT_INC_WITH_EXEC flag on
> *
> */
>
--000e0cd2c0526d39e1046a86a8ea
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
pan dir=3D"ltr"><trawick@gmail.com<=
/a>> wrote:
left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left=
: 1ex;">
t 2:59 PM, William A. Rowe, Jr. <
we@rowe-clan.net" target=3D"_blank">wrowe@rowe-clan.net> wrot=
e:
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
>
> Having thought about this longer, I do agree that it would be reasonab=
le
> to provide OPT_INCNOEXEC as a noop integer for back-compat, but, it
>
> turns out we're out of bits - allow_options_t is an unsigned char =
and
> we're using 2^0 through 2^7 already. :(
work fine,
no? =A0It would devolve to 0, of course, but 256 & 255 should test fine=
..
Thoughts?
Backing up a bit...
I originall=
y thought we could map bit values in 2.2.x to avoid affecting modules, but =
that isn't possible since includes-with-exec is two bits instead of one=
..
Mapping OPT_INCNOEXEC to a no-op integer is something that takes place =
at compile time, and helps applications which reference the symbol but don&=
#39;t use it in any important way.=A0 (IOW, let mod_perl and other similar =
tarballs compile.)=A0 It is good in that it lets mod_perl compile, but bad =
in that mod_perl continues to export the Perl mapping of OPT_INCNOEXEC even=
after httpd has been upgraded and at some point later mod_perl is upgraded=
..
Failing the compile is our only opportunity to catch some affected modu=
les (though it is a rather late opportunity since the modules
will likely be rebuilt later since they're supposed to work as-is when =
upgrading httpd; somebody will grumble though).
I don't think we should try to preserve compilability if we can'=
;t preserve compatibility.
1ex;">
> The only available option is to #define OPT_INCNOEXEC to some bogus
>
> string or something; not sure I like that much better than just a clea=
n
> break.
/*
=A0* #define OPT_INCNOEXEC=A0=
32
=A0* Apache 2.2.12 and later no longer provide this.
=A0* =
Applications which distinguish between includes-without-exec and includes-w=
ith-exec
=A0* must use different logic for 2.2.<12 and 2.2.>=3D12.
=A0* Prior to 2.2.12:
=A0* includes-without-exec: OPT_INCNOEXEC fl=
ag on, OPT_INCLUDES flag off
oops, both fl=
ags were on here
=A0
ing-left: 1ex;">
=A0* includes-with-exec: =A0=
=A0 OPT_INCNOEXEC flag off, OPT_INCLUDES flag on
=A0* As of 2.2.12:
=
=A0* includes-without-exec: OPT_INCLUDES flag on, OPT_INC_WITH_EXEC f=
lag off
=A0* includes-with-exec: OPT_INCLUDES flag on, OPT_INC_WITH_EXEC flag=
on
*
--000e0cd2c0526d39e1046a86a8ea--